// 该案例中，首先调用fopen函数以只读方式打开argv+1指定的文件作为源文件
// 然后调用fopen函数以只写方式打开argv+2指定的文件作为目标文件
// 此后使用fread函数从源文件中读取文件内容存放到buf缓冲区中
// 再将缓冲区中的内容使用fwrite函数写到目标文件中

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
	
	FILE *fp1, *fp2;
	char buf[1024];

	int dp;	// 记录文件操作
	
	if(argc <= 2){
		printf("Please input the current Para!\n");
		return -1;
	}

	// 以只读方式打开argv+1文件，只写方式打开argv2
	if( (fp1 = fopen(argv[1], "rb")) == NULL){
		printf("源文件%s打开失败!\n", argv[1]);
		return -2;
	}

	if( (fp2 = fopen(argv[2], "wb")) == NULL){
		printf("目标文件%s打开失败!\n", argv[2]);
		return -3;
	}

	printf("将%s中的数据写入到%s中\n", argv[1], argv[2]);

	// 因为源文件中可能数据较大，fread无法一次读取完成，因此使用while循环读取
	while( (dp = fread(buf, sizeof(char), 1024, fp1)) > 0){
		if( (fwrite(buf, sizeof(char), dp, fp2)) != dp){
			printf("目的文件中数据写入失败!\n");
			return -3;
		}
	}

	if(dp == -1){
		printf("源文件%s中读取数据失败!\n", argv[1]);
		return -4;
	}

	printf("源文件%s的数据已成功写入到目标文件%s中!\n", argv[1], argv[2]);

	fclose(fp1);
	fclose(fp2);

	return 0;
}
